package com.hqd.ch03.v37.web.servlet;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 控制器的适配器，找到对应的控制器
 */
public interface HandlerAdapter {
    /**
     * 是否可以转换
     *
     * @param handler
     * @return
     */
    boolean supports(Object handler);

    /**
     * 处理请求
     *
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception;

    /**
     * 如果没有默认实现，默认返回-1
     * 这个方法放在这里感觉并不合适，LastModified和适配器并有什么关系，违反了接口单一原则，并不符合Spring一贯的作风
     * 新版本已经弃用，这里考虑到老项目
     *
     * @param request
     * @param handler
     * @return
     */
    @Deprecated
    long getLastModified(HttpServletRequest request, Object handler);
}
